﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace конфигуратор
{
    interface IИнтерфейс
    {
        int МетодИнтефейса();
    }
    public abstract class YY
    {
        
        protected virtual int СвойствоВиртуал { get { return 10; }  }
        public abstract void АбстрактныйМетод();
        public virtual string МетодВиртуальный ( int Число)
        {
            return "";
        }
        public virtual string МетодВиртуальныйNew ()
        {
            return "";
        }
        public void НевиртуальныйМетодYY() {}
        private void ВнутреннийМетод() {}
        protected  void НаследумыйМетод() {}
    }

    public class ПробныйКласс  :YY   ,  IИнтерфейс
    {

        string this[int index]
        {
            get { return index.ToString(); }
            set { value = ""; }
        }

        public const string Константа = "Константа";
        private readonly string _readOnly;
        private FileAttributes _attributes = FileAttributes.Archive | FileAttributes.Device;
        public FileAttributes Атрибуты { get { return _attributes; } set { _attributes = value; } }

        [DllImport( "User32.dll", CharSet = CharSet.Unicode )]
        public static extern int MessageBox ( IntPtr h, string m, string c, int type );


        public int Целлое = 100;
        protected internal int Поле;

        public void ГенерикМетод<T1, T2, TResult> ( T1 первый, T2 второй )
        {
            return ;
        }

        protected override int СвойствоВиртуал { get { return base.СвойствоВиртуал+10; } }

        public  void МетодОбычный( ) {}

        public virtual void G ( ref int h, out int f,  int? hkjh, int d = 0, params object[] par )
        {
            f = 0;
        }

        public override void АбстрактныйМетод()
        {
            throw new NotImplementedException();
        }

        public override sealed string МетодВиртуальный ( int Число )
        {
            return base.МетодВиртуальный(Число)+"kjhjhj";
        }

        public new  string МетодВиртуальныйNew ()
        {
            return "kjhj";
        }

        public int МетодИнтефейса()
        {
            throw new NotImplementedException();
        }

    }
}
